<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 构造函数
        // function Person(name,age){
        //     this.name=name;
        //     this.age=age;
        //     this.jump=function(){
        //         console.log('pink');
        //     }
        // }
        // // 实例对象
        // let p1=new Person('ysn',20);
        // console.log(p1); 
        // // 添加到原型对象上 公共属性
        // Person.prototype.hobby=function(){
        //     console.log('ysn的hobby是爱看帅哥!');
        // }
        // Person.prototype.sex='女';
        // // 添加到person自身上
        // Person.nihao=function(){
        //     console.log('你好你好你好');
        // }
        // Person.color='red';
        // console.dir(Person);

        // // Person自身上的方法如何让使用
        // Person.nihao();   //你好你好你好
        // console.log(Person.color);  //red
        // // 原型对象上的属性和方法
        // p1.hobby();
        // console.log(p1.sex);
        // // 实例对象自身上的方法
        // console.log(p1.age);
        // p1.jump();


        // class类的写法
        class Person{
            // 在class类中默认是严格模式
            // 构造器
            constructor(name,age){
                this.name=name;
                this.age=age;
                this.jump=function(){
                    console.log('class类的写法')
                    
                }
            }
            // 将该方法添加到原型对象上
            hobby(){
                console.log('吃肉');
                
            }
            // 在所有的实例对象上添加该属性
            sex='男';
            // 在person上添加属性和方法(静态的属性和方法)
            static nihao(){
                console.log('哈哈哈哈');
            }
            static color='pink'
        }
        // 实例对象
        let p2=new Person('ysn',20);
        console.log(p2);

        p2.jump();
        p2.hobby();
        Person.nihao();

        let test=p2.jump;
        test();

        // this指向?
        // 1.在全局中this 指向window
        // 2.在全局中的函数中this 指向window
        // 3.作为对象的方法调用时 this指向当前对象
        // 4.构造函数中this指向新形成的实例对象
        // 5.在DOM事件中,this指向绑定事件的DOM对象
        // 6.在严格模式中 全局中this禁止指向window 指向undefined
        // 7.箭头函数没有this指向 他指向外层函数的this指向
    </script>
</body>
</html>